/*
  包含引用中所有接口请求函数的模块
*/
import ajax from './ajax'
import jsonp from 'jsonp'
import { message } from 'antd'
const BASE_URL = ''
// 登录 
// export function reqLogin(username, paswword) {
//   return ajax('/login',{username, paswword}, 'POST')
// }
export const APILogin = 
  (username, password) => 
    ajax( BASE_URL + '/login', { username, password }, 'POST')


// 获取分类列表(一级、二级)
export const APIGetCategoryList = 
  parentId => 
    ajax( BASE_URL + '/manage/category/list', { parentId }, 'GET')

// 添加分类
export const APIAddCategoryList = 
  (parentId, categoryName) => 
    ajax( BASE_URL + '/manage/category/add', { parentId, categoryName }, 'POST')

// 更新分类
export const APIUpdateCategoryName =
  ({ categoryId, categoryName }) => 
    ajax( BASE_URL + '/manage/category/update', { categoryId, categoryName }, 'POST')

// 获取商品分页列表
export const APIGetProducts = 
  (pageNum, pageSize) => 
    ajax( BASE_URL + '/manage/product/list' , {pageNum, pageSize}, 'GET')

// 搜索商品分页列表(根据商品名称:productName、描述:productDesc)
export const APISearchProducts = 
  ({pageNum, pageSize, searchName, searchType}) => 
    ajax( BASE_URL + '/manage/product/search' , {
      pageNum,
      pageSize,
      [searchType]: searchName
    }, 'GET')

// 根据分类ID获取分类
export const APIGetCategory = 
  (categoryId) => 
    ajax( BASE_URL + '/manage/category/info', {categoryId}, 'GET')

// 更新商品的状态上架、下架操作
export const APIUpdateStatus = 
  (productId, status) => 
    ajax( BASE_URL + '/manage/product/updateStatus', {productId, status}, 'POST')

// 删除图片
export const APIDeleteImg =
  name => 
    ajax( BASE_URL + '/manage/img/delete', {name}, 'POST')


// 添加商品
// export const APIAddProduct =
//   product =>
//     ajax( BASE_URL + '/manage/product/add', product, 'POST')  

// 添加 或 更新 商品
export const APIAddOrUpdateProduct =
  product =>
    ajax( BASE_URL + '/manage/product/' + (product._id ? 'update' : 'add'), product, 'POST')  

// 获取所有角色的列表
export const APIGetRoleList = () => ajax( BASE_URL + '/manage/role/list')

// 添加角色
export const APIAddRole = (roleName) => ajax( BASE_URL + '/manage/role/add', {roleName}, 'POST')
  
// 更新角色权限
export const APIUpdateRoleAuth = 
  (role) => 
    ajax( BASE_URL + '/manage/role/update', role, 'POST' )

// 获取用户列表
export const APIGetUserList = () => ajax( BASE_URL + '/manage/user/list' )

// 删除用户
export const APIDeleteUser = (userId) => ajax( BASE_URL + '/manage/user/delete', {userId}, 'POST' )

// 添加用户
export const APIAddUser = 
  userInfo =>
    ajax( BASE_URL + '/manage/user/add', userInfo, 'POST' )

// 更新用户信息
export const APIUpdateUser = 
  userInfo =>
    ajax( BASE_URL + '/manage/user/update', userInfo, 'POST' )

/*
json请求的接口请求函数
 */
export const reqWeather = (city) => {
  return new Promise((resolve, reject) => {
    const url = `http://api.map.baidu.com/telematics/v3/weather?location=${city}&output=json&ak=3p49MVra6urFRGOT9s8UBWr2`
    // 发送jsonp请求
    jsonp(url, {}, (err, data) => {
      // console.log('jsonp()', err, data)
      // 如果成功了
      if (!err && data.status==='success') {
        // 取出需要的数据
        const {dayPictureUrl, weather} = data.results[0].weather_data[0]
        resolve({dayPictureUrl, weather})
      } else {
        // 如果失败了
        message.error('获取天气信息失败!')
      }

    })
  })
}
// reqWeather('北京')
/*
jsonp解决ajax跨域的原理
  1). jsonp只能解决GET类型的ajax请求跨域问题
  2). jsonp请求不是ajax请求, 而是一般的get请求
  3). 基本原理
   浏览器端:
      动态生成<script>来请求后台接口(src就是接口的url)
      定义好用于接收响应数据的函数(fn), 并将函数名通过请求参数提交给后台(如: callback=fn)
   服务器端:
      接收到请求处理产生结果数据后, 返回一个函数调用的js代码, 并将结果数据作为实参传入函数调用
   浏览器端:
      收到响应自动执行函数调用的js代码, 也就执行了提前定义好的回调函数, 并得到了需要的结果数据
 */